package com.chenfan.common.extension.mybatisplus.assembler;

/**
 * DB交互参数对象装配者接口
 *
 * @author wulg
 * @date 2021-09-13
 **/
public interface ParameterObjectAssembler {

    /**
     * 校验是否是Table实体对象进行DML操作
     * @param entityClass
     * @return
     */
    default boolean supportDml(Class<?> entityClass) {
        return true;
    }

    /**
     * 插入填充
     * @param parameter
     */
    void insertFill(Object parameter);

    /**
     * 更新填充
     * @param parameter
     */
    void updateFill(Object parameter);

    /**
     * 重要字段-防更新
     * @param parameter
     */
    default void preventUpdateOfImportantField(Object parameter) {

    }

    /**
     * 是否租户隔离
     * @return
     */
    default boolean tenantIsolation() {
        return false;
    }
}
